package com.rede.didiok.common.feign;

import java.util.Collection;
import java.util.List;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;

import com.rede.didiok.common.config.feign.FeignConfiguration;
import com.rede.didiok.common.dto.BusinessIdListDto;
import com.rede.didiok.common.dto.rank.*;
import com.rede.didiok.common.dto.user.GeneralEditDto;
import com.rede.didiok.common.utils.R;


/**
 * didiok-rank 相关接口
 *
 */
@FeignClient(name = "didiok-user", contextId = "didiok-rank1", configuration = FeignConfiguration.class)
public interface RankFeignClient {

    /**
     * 获取榜单的一些总记录数
     *
     * @return
     */
    @RequestMapping(value = "/rank/feign/index/getTotalCount", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String getTotalCount();

    /**
     * 通过榜单rankId获取榜单成员数目
     *
     * @return
     */
    @RequestMapping(value = "/rank/feign/index/getRankMemberCountByRank", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String getRankMemberCountByRank();

    /**
     * 获取每个榜单分类下的榜单数目
     *
     * @return
     */
    @RequestMapping(value = "/rank/feign/index/getRankCountByCategory", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String getRankCountByCategory();

    /**
     * 获取一年内发布的榜单成员数
     *
     * @return
     */
    @RequestMapping(value = "/rank/feign/index/getRankMemberContributeCount", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String getRankMemberContributeCount();

    /**
     * 获取评论列表
     * @param memberCommentDto
     * @return
     */
    @RequestMapping(value = "/rank/feign/memberComment/getList", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String getCommentPageList(@RequestBody MemberCommentDto memberCommentDto);

    /**
     * 添加评论
     * @param memberCommentDto
     * @return
     */
    @RequestMapping(value = "/rank/feign/memberComment/add", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String addComment(@RequestBody MemberCommentDto memberCommentDto);

    /**
     * 编辑评论
     * @param memberCommentDto
     * @return
     */
    @RequestMapping(value = "/rank/feign/memberComment/edit", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String editComment(@RequestBody MemberCommentDto memberCommentDto);

    /**
     * 删除评论
     * @param memberCommentDto
     * @return
     */
    @RequestMapping(value = "/rank/feign/memberComment/delete", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String deleteComment(@RequestBody MemberCommentDto memberCommentDto);

    /**
     * 批量删除评论
     * @param commentVoList
     * @return
     */
    @RequestMapping(value = "/rank/feign/memberComment/deleteBatch", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String deleteBatchComment(@RequestBody List<MemberCommentDto> commentDtoList);

    /**
     * 审核评论
     * @param memberCommentDto
     * @return
     */
    @RequestMapping(value = "/rank/feign/memberComment/audit", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String auditComment(@RequestBody MemberCommentDto memberCommentDto);

    /**
     * 修改榜单成员content
     * @param generalEditDto
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankMember/content/update", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    R updateRankMemberContent(@RequestBody GeneralEditDto generalEditDto);

    /**
     * 根据 fileUid 更新对应的所有榜单成员，将其中的fileUid全都更换
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankMember/picture/update", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    R updateRankMemberPictureByPictureUid(@RequestParam("fileUid") String fileUid);

    /**
     * 获取榜单分类列表
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankCategory/getList", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String getRankCategoryPageList(@RequestBody RankCategoryDto rankCategoryDto);

    /**
     * 增加榜单分类
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankCategory/add", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String addRankCategory(@RequestBody RankCategoryDto rankCategoryDto);

    /**
     * 编辑榜单分类
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankCategory/edit", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String editRankCategory(@RequestBody RankCategoryDto rankCategoryDto);

    /**
     * 批量删除榜单分类
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankCategory/deleteBatch", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String deleteBatchRankCategory(@RequestBody List<RankCategoryDto> rankCategoryDtoList);

    /**
     * 置顶分类
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankCategory/stick", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String stickRankCategory(@RequestBody RankCategoryDto rankCategoryDto);

    /**
     * 按照推荐等级查询榜单成员数量
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankMember/countByLevel", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    R countRankMemberByLevel(@RequestParam("level") Integer level);

    /**
     * 调用feign接口保存、发布新增领域事件
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankMember/addByAdmin", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    R addRankMemberByAdmin(RankMemberDto rankMemberDto);

    /**
     * 获取榜单成员列表
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankMember/getPageList", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    R getRankMemberPageList(RankMemberDto rankMemberDto);


    /**
     * 本地榜单成员上传
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankMember/uploadLocalRankMember", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String uploadLocalRankMember(@RequestBody List<RankMemberDto> list);

    /**
     * 编辑榜单成员
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankMember/editByAdmin", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String editRankMemberByAdmin(@RequestBody RankMemberDto rankMemberDto);

    /**
     * 修改榜单成员等级
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankMember/updateLevel", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String updateRankMemberLevel(@RequestBody RankMemberDto rankMemberDto);

    /**
     * 发布/下架榜单成员
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankMember/publishByAdmin", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String publishByAdmin(@RequestBody RankMemberDto rankMemberDto);

    /**
     * 发布/推荐榜单成员排序调整
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankMember/editBatch", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String editBatch(@RequestBody List<RankMemberDto> list);

    /**
     * 发布/推荐榜单成员排序调整
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankMember/deleteByAdmin", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String deleteRankMemberByAdmin(@RequestBody RankMemberDto rankMemberDto);

    /**
     * 删除选中榜单成员
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankMember/deleteBatch", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String deleteBatchRankMember(@RequestBody List<RankMemberDto> list);

    /**
     * 审核榜单成员
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankMember/audit", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String auditRankMember(@RequestBody RankMemberDto rankMemberDto);

    /**
     * 榜单成员简介刷新
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankMember/flushRankMemberSummary", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String flushRankMemberSummary();

    /**
     * 榜单成员简介刷新
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankMember/batchAuditRankMember", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String batchAuditRankMember(@RequestBody List<String> uidList,
                                @RequestParam("nickname") String nickname,
                                @RequestParam("auditStatus") String auditStatus,
                                @RequestParam("rejectReason") String rejectReason);

    /**
     * 根据uid列表查询榜单成员
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankMember/listByUidList", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    R listRankMemberByUidList(@RequestParam("memberUids") List<String> memberUids);
    /**
     * 根据oid列表查询榜单成员
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankMember/listByOidList", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    R listRankMemberByOidList(@RequestParam("memberOids") List<String> memberOids);

    /**
     * 榜单成员下架操作
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankMember/revocation", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    R revocationRankMember(@RequestParam("uid") String uid);

    /**
     * 评论下架
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/memberComment/revocation", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    R revocationComment(@RequestParam("uid") String uid);

    /**
     * 批量同步榜单成员索引
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankMember/buildAggDoc", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String buildRankMemberAggDoc();

    /**
     * 获取榜单列表
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rank/getList", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String getRankPageList(@RequestBody RankDto rankDto);

    /**
     * 增加榜单
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rank/add", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String addRank(@RequestBody RankDto rankDto);

    /**
     * 编辑榜单
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rank/edit", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String editRank(@RequestBody RankDto rankDto);

    /**
     * 批量删除榜单
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rank/deleteBatch", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String deleteBatchRank(@RequestBody List<RankDto> rankDtoList);

    /**
     * 置顶榜单
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rank/stick", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String stickRank(@RequestBody RankDto rankDto);

    /**
     * 通过引用量排序榜单
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rank/rankSortByMemberCount", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String rankSortByMemberCount();

    /**
     * 获取榜单列表
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/memberTag/getList", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String getTagPageList(@RequestBody MemberTagDto tagDto);

    /**
     * 增加榜单
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/memberTag/add", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String addTag(@RequestBody MemberTagDto tagDto);

    /**
     * 编辑榜单
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/memberTag/edit", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String editTag(@RequestBody MemberTagDto tagDto);

    /**
     * 批量删除榜单
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/memberTag/deleteBatch", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String deleteBatchTag(@RequestBody List<MemberTagDto> tagDtoList);

    /**
     * 置顶榜单
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/memberTag/stick", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String stickTag(@RequestBody MemberTagDto tagDto);

    /**
     * 通过引用量排序榜单
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/memberTag/tagSortByCite", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String tagSortByCite();


    /**
     * 获取榜单成员等级列表
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/memberGrade/getList", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String getMemberGradePageList(@RequestBody MemberGradeDto memberGradeDto);

    /**
     * 增加榜单成员等级
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/memberGrade/add", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String addMemberGrade(@RequestBody MemberGradeDto memberGradeDto);

    /**
     * 编辑榜单成员等级
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/memberGrade/edit", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String editMemberGrade(@RequestBody MemberGradeDto memberGradeDto);

    /**
     * 批量删除榜单成员等级
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/memberGrade/deleteBatch", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String deleteBatchMemberGrade(@RequestBody List<MemberGradeDto> memberGradeDtoList);

    /**
     * 根据各种业务id列表查询对应的对象集合
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankMember/listBusinessObjectByIds", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    R listBusinessObjectByIds(@RequestBody BusinessIdListDto businessIdListDto);

    /**
     * 查出所有分类以及子分类，以树形结构组装起来
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankCategory/menu/list", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String listWithTree();

    /**
     * 根据分类id查询分类信息
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankCategory/detail", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String getCategoryById(@RequestParam("catId") String catId);

    /**
     * 保存
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankCategory/menu/save", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String save(@RequestBody RankCategoryDto category);

    /**
     * 修改
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankCategory/menu/update", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String updateCascade(@RequestBody RankCategoryDto category);

    /**
     * 修改分类排序
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankCategory/menu/update/sort", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String updateBatchById(@RequestBody List<RankCategoryDto> asList);

    /**
     * 删除
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankCategory/menu/delete", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String removeMenuByIds(@RequestBody List<Long> asList);

    /**
     * 根据id获取榜单成员
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankMember/getRankMemberById", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    R getRankMemberById(@RequestParam("uid") String uid);

    /**
     * 根据id获取榜单成员评论
     * @param fileUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/memberComment/getCommentById", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    R getCommentById(@RequestParam("uid") String uid);

    /**
     * 根据用户列表ID  查询各用户发表博客数
     * @param linkDto
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankMember/getUsersRankMemberCountByUserIds", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    R getUsersRankMemberCountByUserIds(@RequestParam("userUids") List<String> userUids);

    /**
     * 根据用户列表ID  查询各用户评论数
     * @param
     * @return
     */
    @RequestMapping(value = "/rank/feign/memberComment/getCommentCountByUserIds", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    R getCommentCountByUserIds(@RequestParam("userUids") List<String> userUids);


    /**
     * 根据用户列表ID  查询各用户评论数
     * @param
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankMember/countByUserUidAndSource", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    Integer countRankMemberByUserUidAndSource(@RequestParam("userUid") String userUid, @RequestParam("source") String source);

    /**
     * 获取评论数量
     * @param createUserUid
     * @param memberUid
     * @param toUserUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/memberComment/getCommentCount", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    Integer getCommentCount(@RequestParam("createUserUid")String createUserUid, @RequestParam("memberUid")String memberUid, @RequestParam("toUserUid")String toUserUid);

    /**
     * 获取发表的文章数
     * @param createUserUid
     * @param memberUid
     * @param toUserUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankMember/getCountByAdminOrUser", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    Integer getRankMemberCountByAdminOrUser(@RequestParam("adminUid") String adminUid, @RequestParam("userUid") String userUid);

    /**
     * 获取文章数
     * @param createUserUid
     * @param memberUid
     * @param toUserUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankMember/getRankMemberCount", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    Integer getRankMemberCount(RankMemberDto rankMemberDto);

    /**
     * 根据用户id和文章来源，查询文章的oid和Uid
     * @param createUserUid
     * @param memberUid
     * @param toUserUid
     * @return
     */
    @RequestMapping(value = "/rank/feign/rankMember/listIdByUserUidAndSource", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    R listIdByUserUidAndSource(@RequestParam("userUid") String userUid, @RequestParam("source") String source);

    /**
     * 根据id集合查询评论
     * @param uidList
     * @return
     */
    @RequestMapping(value = "/rank/feign/memberComment/getCommentPageListByIds", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String getCommentPageListByIds(@RequestParam("uidList") Collection<String> uidList);

    /**
     * 添加评论（当该评论不是一级评论时，需要设置一级评论UID字段）
     * @param comment
     * @return
     */
    @RequestMapping(value = "/rank/feign/memberComment/addCommentWithFirstCommentUid", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    R addCommentWithFirstCommentUid(@RequestBody MemberCommentDto comment);

    /**
     * 移除该文章下所有评论
     * @param memberUidList
     * @return
     */
    @RequestMapping(value = "/rank/feign/memberComment/batchDeleteCommentByMemberUid", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    R batchDeleteCommentByMemberUid(@RequestBody List<String> memberUidList);


    /**
     * 获取举报列表
     *
     * @param noticeVO
     */
    @PostMapping(value = "/rank/feign/report/getList", produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String getReportPageList(@RequestBody RankReportDto reportDto);

    /**
     * 根据id更新评论
     * @param rankPraiseRecordDto
     * @return
     */
    @PostMapping(value = "/rank/feign/praiseRecord/updateById", produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    R updatePraiseRecordById(@RequestBody RankPraiseRecordDto rankPraiseRecordDto);

    /**
     * 获取连续发文的天数
     *
     * @param userUid
     * @return
     */
    @PostMapping(value = "/rank/feign/rankMember/getContinuousPublishRankMemberCount", produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    Integer getContinuousPublishRankMemberCount(@RequestParam("userUid") String userUid);

    /**
     * 获取连续发文的天数
     *
     * @param userUid
     * @return
     */
    @PostMapping(value = "/rank/feign/praiseRecord/getRankPraiseCount", produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    Integer getRankPraiseCount(@RequestBody RankPraiseRecordDto userPraiseRecordVO);


    /**
     * 获取用户所有博客的阅读数
     *
     * @param userUid
     * @return
     */
    @PostMapping(value = "/rank/feign/rankMember/getRankMemberClickCount", produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    Integer getRankMemberClickCount(@RequestParam("userUid") String userUid);

    /**
     * 根据 条件 查询 RankMemberUid
     * @param rankMemberDto
     * @return
     */
    @PostMapping(value = "/rank/feign/rankMember/listRankMemberUid", produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String listRankMemberUid(@RequestBody RankMemberDto rankMemberDto);
}